#ifndef CANTHREAD_H
#define CANTHREAD_H

#include <QObject>
#include "./CanLib/ControlCAN.h"
#include <QTime>
#include <QTimer>
#include <QCoreApplication>
#include <QMetaType>
#include <string.h>
#include <QTimer>
#include <QFile>
#include <QRandomGenerator>

class canThread : public QObject
{
    Q_OBJECT
public:
    explicit canThread(QObject *parent = nullptr);
    bool openCan();
    void stopCan();
    void closeCan();
    void sendData(int ID,std::vector<int> vec);
    void stCan();
    void dataProcess(VCI_CAN_OBJ *vci, DWORD dwRel);
    void canID(VCI_CAN_OBJ *vci, DWORD dwRel);

    void stoRecData(QString data);
    void stoSenData(QString data);
    void Sendradar();

    int deviceType;
    int debicIndex;
    int baundRate;
    int debicCom;
    int debicCom1;

    bool stopped;
    bool mingling2 = false;
    bool tcpConnectStatus = false;   
    bool Stop = false;

    QString da1;
    float dat1;
    int num = 0;
    int timer;
    void timerEvent(QTimerEvent *e);
signals:
    void SIGcanclosuc();                                                //CAN断开成功信号
    void SIGtosqlstorecdat(VCI_CAN_OBJ *vci, DWORD dwRel);              //CAN接收数据发送到数据库信号
    void SIGtosqlstosendat(QString xVal,QByteArray data);               //CAN发送数据发送到数据库信号
    void SIGcansuc(QString str);                                        //CAN开启、关断状态信号
    void SIGcanopefai();                                                //CAN打开失败信号
    void dataCan(QString a1,QString b1);//CAN数据发送
    void dataStart();
    //雷达报文信号
    void SIGtomai(QString str);
    //雷达数据信号
    void SIGtomain(QString str);
    //雷达距离信号
    void SIGdistance(QString str);
    //雷达信号强度
    void SIGsignal(QString str);

    void SIGtoSS(VCI_CAN_OBJ *vci, DWORD dwRel);

    void SIGtoSend(int ID, std::vector<int> vec);

    void SIGCanOpen();
    void SIGCanClose();

    void SendCan(QString data);

    void radar_1(QString r1);
    void radar_2(QString r1);
    void radar_3(QString r1);
    void radar_4(QString r1);
    void radar_5(QString r1);
    void radar_6(QString r1);
    void radar_7(QString r1);
    void radar_8(QString r1);
    void radar_9(QString r1);
    void radar_10(QString r1);

    void radstop(bool bo);

private:
    void sleep(unsigned int msec);

    QTimer Timer1;
};

#endif // CANTHREAD_H
